home *** CD-ROM | disk | FTP | other *** search
- property ancestor, knocks, T1, T2, T3, T4, T5, interestTime, nextPic, eattimer, speed, ang, leftAng, rightAng, turnspeed, lastSide, eyeSight, angleOfView, hitDistance, HalfangleOfView, thingsSeenList
- global viewObj, mouseObj, world, VScreen, Fcir, Hcir, Qcir, TQcir, radInDeg, degInRad
-
- on new me
- me.ancestor = new(script("basicParent"))
- init(me)
- return me
- end
-
- on init me
- eattimer = 0
- me.zHeight = 20
- knocks = 1
- nextPic = 0
- me.type = #turky
- me.posH = 150
- me.posV = 500
- T1 = new(script("partParent"), 0, 0, "T1")
- T2 = new(script("partParent"), 0, 0, "T2")
- T3 = new(script("partParent"), 0, 0, "fill2")
- T4 = new(script("partParent"), 0, 0, "target")
- T5 = new(script("partParent"), -111, -22, "numLeft")
- addProp(ancestor.partlist, me.type, T1)
- addProp(ancestor.partlist, me.type, T2)
- addProp(ancestor.partlist, me.type, T3)
- addProp(ancestor.partlist, me.type, T4)
- addProp(ancestor.partlist, me.type, T5)
- makeMyRect(me)
- addVal(VScreen, me.posH, me.posV, me)
- speed = 1
- ang = convertAng(270)
- turnspeed = 0.20000000000000001
- lastSide = turnspeed
- eyeSight = 100
- angleOfView = 40
- hitDistance = 15
- HalfangleOfView = convertAng(angleOfView / 2)
- me.posH = me.posH + 40
- me.posV = me.posV + 50
- move(me, 0, 0, 1)
- end
-
- on update me
- a = rect(me.posH - eyeSight, me.posV - eyeSight, me.posH + eyeSight, me.posV + eyeSight)
- bugList = getallInRect(VScreen, a, me)
- getinViewListH(me, bugList)
- decide(me)
- end
-
- on decide me
- if eattimer > the ticks then
- T3.mem = member("fill" & random(4))
- else
- T3.mem = member("fill1")
- end if
- if count(thingsSeenList) > 0 then
- firstThing = getAt(thingsSeenList, 1)
- case firstThing.type of
- #food:
- grabbedObj = firstThing.obj
- countdown(world, grabbedObj)
- if firstThing.dist < hitDistance then
- puppetSound(1, "Squishy")
- add(deleteList, grabbedObj)
- deleteObj(grabbedObj)
- eattimer = the ticks + (30 * 4)
- return
- end if
- grabbedObj.ownControll = 0
- a = (me.posH - grabbedObj.posH) / 4
- b = (me.posV - grabbedObj.posV) / 4
- moveTo(firstThing.obj, a, b)
- end case
- end if
- end
-
- on knock me, ang
- addHit(me, ang)
- end
-
- on addHit me, ang
- return
- knocks = knocks + 1
- if knocks > 4 then
- knocks = 1
- nextPic = nextPic + 1
- if nextPic < 6 then
- interestTime = the timer + (30 * 2)
- a = the number of member "ball"
- T1.mem = member(a + nextPic)
- else
- me.ofInterest = 0
- end if
- speedhit = 30
- g = findMotion(ang)
- move(me, integer(getAt(g, 1) * speedhit), integer(getAt(g, 2) * speedhit), ang)
- else
- speedhit = 6
- g = findMotion(ang)
- move(me, integer(getAt(g, 1) * speed), integer(getAt(g, 2) * speedhit), ang)
- end if
- end
-
- on draw me, sp, offsetH, offsetV
- sp = draw(T2, sp, offsetH, offsetV)
- sp = draw(T3, sp, offsetH, offsetV)
- draw(T1, 4, offsetH, offsetV)
- draw(T4, 5, offsetH, offsetV)
- draw(T5, 120, offsetH, offsetV)
- return sp
- end
-
- on getinViewListH me, objList
- me.leftAng = me.ang - HalfangleOfView
- me.rightAng = me.ang + HalfangleOfView
- thingsSeenList = [:]
- if me.leftAng < 0 then
- me.leftAng = me.leftAng + Fcir
- InView2(me, objList)
- else
- if me.rightAng > Fcir then
- me.rightAng = me.rightAng - Fcir
- InView2(me, objList)
- else
- InView1(me, objList)
- end if
- end if
- end
-
- on InView2 me, objList
- repeat with x in objList
- if x.ofInterest = 0 then
- next repeat
- end if
- if x = me then
- next repeat
- end if
- if x = mouseObj then
- next repeat
- end if
- tempAng = findAngle(me.posH, me.posV, x.posH, x.posV)
- dist = getDistNum(x.posH, x.posV, me.posH, me.posV)
- if dist > eyeSight then
- next repeat
- end if
- if (tempAng < me.leftAng) and (tempAng > me.rightAng) then
- next repeat
- end if
- if tempAng > Hcir then
- if (me.ang < tempAng) and (me.ang > Hcir) then
- side = turnspeed
- else
- side = -turnspeed
- end if
- else
- if (me.ang > tempAng) and (me.ang < Hcir) then
- side = -turnspeed
- else
- side = turnspeed
- end if
- end if
- temp = x.type
- temp2 = gettypeVal(me, temp) + dist
- addProp(thingsSeenList, temp2, new(script("seenParent"), dist, side, temp, x))
- sort(thingsSeenList)
- end repeat
- end
-
- on InView1 me, objList
- repeat with x in objList
- if x.ofInterest = 0 then
- next repeat
- end if
- if x = me then
- next repeat
- end if
- if x = mouseObj then
- next repeat
- end if
- tempAng = findAngle(me.posH, me.posV, x.posH, x.posV)
- dist = getDistNum(x.posH, x.posV, me.posH, me.posV)
- if dist > eyeSight then
- next repeat
- end if
- if (tempAng < me.leftAng) or (tempAng > me.rightAng) then
- next repeat
- end if
- if tempAng > ang then
- side = turnspeed
- else
- side = -turnspeed
- end if
- temp = x.type
- temp2 = gettypeVal(me, temp) + dist
- addProp(thingsSeenList, temp2, new(script("seenParent"), dist, side, temp, x))
- sort(thingsSeenList)
- end repeat
- end
-